In general, an inertial measurement unit (IMU) is a system that detects linear and angular motion and produces data that can be used to determine the position, velocity, and orientation of the IMU or of the device (or vehicle) to which the IMU is attached. IMUs typically operate using a combination of one or more accelerometers and gyroscopes. The measurements made by the components of an IMU often include some degree of error. Thus, when the IMU is used to measure movement and orientation over a period of time, the measurement errors can accumulate and compound themselves as the time period of measurement lengthens. Consequently, the IMU will report increasingly inaccurate movement or orientation data. This effect is commonly referred to as “drift” or “IMU drift”.
As IMUs are increasingly used in a variety of applications (including vehicle navigation, autonomous device navigation (e.g., robots and drones), and virtual reality applications (e.g., gaming applications that use a virtual reality headset), there is a growing need for IMU systems that are both highly accurate and have robust drift compensation mechanisms. Further, IMUs desirably are capable of being used in a variety of environments or conditions, including indoor environments (e.g., a building or other structure having surrounding walls and a ceiling).